package com.fan.util;

import com.fan.game.Bullet;

import java.util.ArrayList;
import java.util.List;

/**
 * 子弹对象池类
 */
public class BulletsPool {
    public static final int DEFAULT_POOL_SIZE = 200;
    public static final int POOL_MAX_SIZE = 200;
    //用于保存所有的子弹包括敌人的
    private static List<Bullet> pool = new ArrayList<>();
    //在类加载的时候创建200个子弹对象添加到容器中
    static {
        for (int i = 0; i < DEFAULT_POOL_SIZE; i++) {
            pool.add(new Bullet());
        }
    }
    //从池塘获取一个对象
    public static Bullet get(){
        Bullet bullet =null;
        //池塘被掏空
        if(pool.size() == 0){
            bullet =new Bullet();
        }
        //还有对象
        else{
            bullet = pool.remove(0);
        }
        return bullet;
    }

    //子弹被销毁的时候，归还到池塘中
    public static void theReturn(Bullet bullet){
        //池塘的子弹个数达到最大值，那就不再归还
        if(pool.size() == POOL_MAX_SIZE){
            return;
        }
        pool.add(bullet);
    }
}
